home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1996 July / Macworld (1996-07).dmg / Shareware World / Compression / MacPGP-Control / MPGPC Manual / MPGPC Manual.rsrc / TEXT_1900_Technical Aspects.txt < prev    next >
Text File  |  1996-02-07  |  9KB  |  154 lines

  1. Scripting MacPGP Control    
  2. The following is the syntax for handlers defined within the MPGPC application for use by external scripts:
  3.  
  4.  
  5. ‚Ä¢ MPGPC_ShowClipboard ()    
  6. Shows the MPGPC clipboard window if it's not already displayed.
  7.  
  8.  
  9. ‚Ä¢ MPGPC_HideClipboard ()    
  10. The reverse of the previous action.
  11.  
  12.  
  13. ‚Ä¢ MPGPC_Preferences ()    
  14. Invokes the Preferences dialog and allows editing of MPGPC preferences.
  15.  
  16. The MPGPC preferences themselves are grouped and saved as an AppleScript script object. They look like so:
  17.  
  18. property p_ExpandTabs : true -- if true replace Tab characters by spaces
  19. property p_TabLength : 5 -- default number of spaces to replace each Tab character
  20. property p_Transliterate : true -- if true apply transliteration to message before further processing it
  21. property p_TransTable : 1 -- if = 1 use 1‚Ķ1 transliteration table, if = 2 use 1‚Ķmany transliteration table
  22. property p_wrapPGP : true -- if true wrap message before further processing it
  23. property p_wrapLineLength : 80 -- default maximum line length when wrapping message for clear signing
  24. property p_signPGP : true -- RESERVED DO NOT TOUCH
  25. property p_UserName : "" -- default user ID
  26. property p_how2Sign : 1 -- if = 1 clear sign, if = 2 sign opaque, if = 3 sign separate
  27. property p_ICsign : true -- if true include email signature at bottom of message
  28. property p_KeyServer : "pgp-public-keys@pgp.ai.mit.edu" -- hostname to mail GET requests to
  29. property p_useHTTP : true -- if true try to connect thru TCP/IP, else mail a GET request
  30. property p_HTTPserver : "www-swiss.ai.mit.edu" -- hostname of an HTTP aware PGP keyserver
  31. property p_KeyringFile : "" -- pathname of keyring or addressbook file used in Sign/Encrypt dialog
  32. property p_KeyringDate : current date -- modification date as last seen for p_KeyringFile when scanned
  33. property p_KeyringKeys : {} -- list of key info last scanned in p_KeyringFile
  34. property p_AutoMove : false -- if true move received PGP mail to p_PGPmailbox
  35. property p_PGPmailbox : "" -- pathname of special mailbox to move PGP mail to
  36. property p_AutoDecrypt : true -- NOT YET IMPLEMENTED
  37. property p_SaveMessage : true -- If true then save message else queue it
  38.  
  39. The MPGPC Preferences file is written back at quitting time. The first time it's created (when no ‚ÄúMPGPC Preferences‚Äù file is found in the Preferences folder inside the active System folder) its type is changed to ‚ÄúPREF‚Äù and its creator to MPGPC (signature ‚ÄúTGD2‚Äù).
  40.  
  41.  
  42. ‚Ä¢ MPGPC_EditTT ()    
  43. Invokes the Edit Transliteration Table to allow editing of the 1‚Ķmany transliteration table. A 1‚Ķmany transliteration table when saved to disk has a file type of ‚ÄúTTbl‚Äù and its creator set to ‚ÄúTGD2‚Äù (MPGPC's signature).
  44.  
  45.  
  46. ‚Ä¢ MPGPC_Conventional ()    
  47. Invokes the Conventional Encrypt dialog and allows conventional encryption of a file.
  48.  
  49.  
  50. ‚Ä¢ MPGPC_MakeCertificate ()    
  51. Invokes a standard choose file which when selected will generate a spearate signature certificate. The name and location of the certificate will be done through a standard choose file dialog as well.
  52.  
  53.  
  54. ‚Ä¢ MPGPC_Asciify ()    
  55. Invokes a standard choose file dialog which when selected will be asciified and its name appended with an ‚Äú.asc‚Äù extension.
  56.  
  57.  
  58. ‚Ä¢ MPGPC_Process1Object (f: anything)    
  59. The action executed will depend on the class of the object whose reference is passed at the time of the call. The general algorithm of this handler looks like this:
  60.  
  61. if f's class is file or alias then -- it's a file or a folder
  62.    if it's a folder then
  63.       process all of the folder contents an object at a time
  64.    else if it's a file of type "clpt" then -- process a text clipping
  65.       extract the first TEXT resource and act upon it depending on the set behaviour
  66.    else if it's a file of type "TEXT" then -- it's a text file
  67.       read the file and process its contents depending on the set behaviour
  68.    else if it's and addressbook file then
  69.       invoke addressbook management
  70.    else if it's a PGP public keyring file then
  71.       invoke keyring management
  72.    else
  73.       tell MacPGP to open the file
  74.    
  75. else if f's class is string or text then -- it's a text clipping drag-dropped directly
  76.    act on f depending on the set behaviour
  77.  
  78. else
  79.    signal error
  80.  
  81.  
  82. ‚Ä¢ MPGPC_ShredFile (f: string)    
  83. Tests to see if a Finder object with a pathname of f exists. If it does it's wiped by MacPGP.
  84.  
  85.  
  86. ‚Ä¢ MPGPC_GetClipboard ()    
  87. Returns a string representation of the current contents of MPGPC clipboard.
  88.  
  89.  
  90. ‚Ä¢ MPGPC_PutClipboard (d: anything)    
  91. If d's class is a string or a text, then the contents are placed in MPGPC's clipboard. The clipboard window if opened at the time is refreshed.
  92.  
  93.  
  94. ‚Ä¢ MPGPC_Decrypt (m: string)    
  95. Returns an empty string if unsuccessful, otherwise an AppleScript string object of the following form:
  96.  
  97. theBefore & return & ¬¨
  98. "- ----BEGIN PGP DECIPHERED MESSAGE----" & return & ¬¨
  99. theMessage & return & ¬¨
  100. "- ----END PGP DECIPHERED MESSAGE----" & return & ¬¨
  101. theAfter
  102.  
  103. Where:
  104. theBefore is the text object before the PGP Headerline Header (¬ß PGP Message Exchange Formats Internet-Draft),
  105. theMessage is the deciphered PGP message, and
  106. theAfter is the text object after the PGP Headerline Tail.
  107.  
  108.  
  109. Addressbook record structures    
  110. The addressbook file is a dBAS file type generated by GTQ's Object Database osax (¬© Gregory T. Quinn), but with a MPGPC creator type. dBAS files have mainly two fields: a key field and data object field. Two kinds of records are saved in such MPGPC dBAS files: User and Group records. Both have a 32-character long key field with case and diacritical sensitive characters allowed. The difference between the two kinds of records resides in the structure of their data object part.
  111.  
  112.  
  113. ‚Ä¢ User data object structure    
  114. The user data object is an AppleScript record of the following form:
  115.  
  116. ¬´class P@NN¬ª: string -- 32-character max. copy of the key field = record nickname
  117. ¬´class P@RN¬ª: string -- real name of the user
  118. ¬´class P@KI¬ª: string -- 8-character key ID assigned by MacPGP to the key
  119. ¬´class P@KF¬ª: string -- pathname of the keyring file last seen to contain this key
  120. ¬´class P@N1¬ª: integer -- index (starts with 1) of the first byte of the Key Certificate Packet in keyring file for this key
  121. ¬´class P@UI¬ª: string -- primary user ID of the key's owner
  122. ¬´class P@EM¬ª: string -- email address of the key's owner
  123. ¬´class P@**¬ª: string -- comment field
  124.  
  125.  
  126. ‚Ä¢ Group data object structure    
  127. The group data object is an AppleScript record of the following form:
  128.  
  129. ¬´class P@NN¬ª: string -- 32-character max. copy of the key field = record nickname
  130. ¬´class P@ML¬ª: list -- list of 0, 1 or more user nicknames for the current members of this group
  131. ¬´class P@**¬ª: string -- comment field
  132.  
  133.  
  134. Known bugs/oddities    
  135. ‚Ä¢ When editing a new message in Eudora, either through a New Message‚Ķ or a Reply‚Ķ action, and then selecting an Encrypt-Sign action in MPGPC, the latter will not be able to get this new message; instead it will select the next one down in the Eudora's window layers, or the selected message in the selected mailbox window if the new message was in the only window opened at the time.
  136.  
  137. The workaround to this is to save the message (by closing it), select it and then call/click the Encrypt-Sign script/button.
  138.  
  139. ‚Ä¢ In low memory situations, or/and when you open more than one keyring/addressbook management windows, MPGPC will report an error but continues to process the request. The end result in such cases is not the complete contents of the file/object being processed.
  140.  
  141. The workaround to this is to allocate more RAM to MPGPC.
  142.  
  143. ‚Ä¢ In PGP¬Æ Dataskope window, time information for PGP packets does not always coincide with that reported by MacPGP. The date is aways the same though.
  144.  
  145. ‚Ä¢ The Edit menu items are not handled by MPGPC, instead it's left to FaceSpan to deal with them. This does not yield to a consistent behaviour across the fields and objects of the application and its windows.
  146.  
  147. ‚Ä¢ The font/size used for the Message area in the Sign/Encrypt dialog is as mentioned earlier Monaco/10-point. Some characters, although are present in the text stream, become invisible and are replaced by a space. This is due to the fact that the bitmap resource for this font at this point size does not include a visual representation for these characters. If MPGPC survives PGP 3.0, I'll design a 10-point font that will eliminate this ‚Äúfeature.‚Äù
  148.  
  149. ‚Ä¢ When an abnormal termination/shutdown of the system occurs, the next time the MPGPC application is launched it might generate a "-39: File Not Found" error. If this happens, you'll notice that the Minimum and Preferred size fields in the application's information window display ridiculously low values that you cannot change. This indicates that the MPGPC application file became corrupted. You should trash this file and install a fresh copy of the application.
  150.  
  151. ‚Ä¢ MPGPC is reported not to co-habit well with Aaron 1.1.2.
  152.  
  153. ‚Ä¢ On some new PowerMacs, if you quit Eudora before MPGPC, a bomb occurs; otherwise if MPGPC is terminated first, everything is fine. This looks like a FaceSpan problem, or more precisely a problem that SDU (publishers of FaceSpan) are in a position to solve either by themselves or in consort with Qualcom (publishers of Eudora). A bug report was filed with SDU.
  154.